home *** CD-ROM | disk | FTP | other *** search
- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
-
- ==================================================================
- ==±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±==
- ==±±±±####±±±±###±±±±±###±±###±±±###±####±±±±±±±±±±± ±±==
- ==±±±##°°##±±°°###±±±###±±°##±±±°°##°°##±±±±±±±±±±±± Amiga ±±==
- ==±±##±±°°##±±°#########±±°##±±±±°##±°##±±±±±±±±±±±± Multi- ±±==
- ==±°##±±±°##±±°#########±±°##±±±±°##±°##±±±±±±±±±±±± User ±±==
- ==±°########±±°##°###°##±±°##±±±±°##±°##±±±±±±±±±±±± games ±±==
- ==±°##°°°°##±±°##°°°±°##±±°°##±±±##±±°##±±±±±#±±±±±± Language ±±==
- ==±°###±±###±±####±±±####±±°#######±±#########±±±±±± ±±==
- ==±°°°±±°°°±±°°°°±±±°°°°±±±°°°°°°°±±°°°°°°°°°±±±±±±±±±±±±±±±±±±±==
- ==±============================================================±==
- ==±= Updates From Version 0.865 -> 0.890 =±==
- ==±============================================================±==
- ==±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±==
- ==================================================================
-
-
- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
-
-
- Version 0.890 Detailed Update Notes & Examples
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- INDEX
- =====
-
-
- [1] Update Brief
- [1.1] Update Information
- [1.2] Update List & Notes
-
- [2] Title.Txt
- [2.1] Title.Txt/RankScale=
- [2.2] Title.Txt/TimeScale=
-
- [3] Language
- [3.1] Language/Conditions
- [3.2] Language/Actions
- [3.3] Language/Other Changes
- [3.4] Language/Examples
-
- [4] Next version...
-
- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
- = B r i e f i n g =
- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
-
- Version 0.890 updates in Brief
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- [1] Update Brief
-
- Version 0.8.90 of AMul has seen some fiddly changes. Not a great
- deal happened in this version; most of it is the result of some
- severe play testing of an adventure called 'Valley'. The only
- bug I am currently aware occurred under KickStart 2.0, and was a
- guru 81000005 (Corrupted memory list). This I am tracing as fast
- as my bony fingers will type!
-
- The next couple of versions will see some MAJOR jiggling to suit
- my adventure, and to increase the multi-user interactive power!
-
- [1.1] Update Information
-
- * Daemons can now call themselves.
- * AMUL now understands adjectives.
- * Combat bugs fixed.
- * AMan support for external utilities now initialized...
- * Bug where screen titles sometimes got obliterated (WB 2.0 only) fixed.
- * Players can now have a pre-rank and post-rank description.
- * New action 'syntax' to let YOU reset NOUN1 and NOUN2, reduce code size!
- * Lang.Txt can now contain sub routines using the DO action.
- * 'Interact' action allows you to interact more freely.
- * FailParse/AbortParse/FinishParse bug fixed.
- * Treatas improved.
- * More speed increases!
- * Adjectives 100%.
- * It is now possible to invoke a 'remote' daemon.
- * AutoExits installed.
- * Cured the weird line-wrap problem in the invent command.
- * Fixed some player-movement problems.
- * "Follow" facilities implemented.
- * The "@me has arrived" and "@me has left" for players can be changed!
- * Random VALUES implemented!
- * Internal parameter editor for users!
- * verb <noun list> now supported, eg: get noun1,noun2,noun3,noun4,noun5!
- * User-definable screen length, screen width and redo-character!
- * Rank & Time scaling (scales value of certain objects).
- * Actions RESPOND and ERROR introduced to reduce Lang.Txt/Travel.Txt size.
- * Bug in the SYNTAX command fixed.
- * "-> treatas" bug fixed.
- * New object fixed flag, 'SMELL'.
- * Scenery objects with a description (eg "It is raining") are now shown when
- a player views a HIDEAWAY room's description.
- * Blind players can now see their inventory.
- * Blind players can no-longer see their own inventory.
- * New Verb flag !! DREAM! Indicates players can execute this whilst asleep.
- * Players can no-longer execute ALL commands whilst asleep.
- * NEW INTERNAL USER-PARAMETER ADJUSTMENT COMMANDS! TYPE /? FOR LIST!
- * Daemon bugs in AMan now cured... Multiple-daemons finally work!
- * New variables: MYSCORE, MYSCTG and MYSTR.
- * ANOTHER SysMsg -- Description of a Death room in the Exits list.
- * Compiler now sets Scenery objects' weight as ( Top Rank Strength + 1 )
- * New conditions: Full <stat> <player> and Time <number>
- * New variables: lastroom, lastdir, lastverb.
- * Condition: FIRE <object> - TRUE if the object has the new 'fire' flag.
- * Recompiled using the Lattice 'C' -O optimization option, faster and
- smaller code!
- * The SHOWFIRE feature (object flag 'fire') has been 100% installed.
- * If you want to open a PROPER shared serial port, AMUL now lets you.
- * If a player dies in a DEATH room with no DMOVE flag, objects go to the
- players LAST room.
- * New room flag PEACEFUL to prevent fighting.
- * New conditions: Magic, Spell, and Health.
- * New Actions: Toprank, Deduct, Damage and Repair.
- * New spell SINVIS.
- * New announcement group ALL.
- * The HURT command has been totally erased as it's no longer needed.
- * '-p' option for using Paragon door interpreter removed! If you want to
- run AMUL through a BBS, use the -X option...
- * AMAN -r no-longer causes a system lockup.
- * New AMAN command : AMAN -r [<delay to reset>] resets in <delay> seconds
- -- Note ... This gives the users warning of the coming reset.
- * New AMAN command : AMAN -x <time in seconds> extends current game time
-
- [1.2] Update List & Notes
-
- Conditions:
-
- Condition Description
- =============================================================
- noun1 <noun> TRUE if noun1 = <noun>
- noun2 <noun> TRUE if noun2 = <noun>
- autoexits TRUE if autoexits enabled
- debug TRUE if debug mode enabled
- attrib <stat> <numb> -> stat <stat> <player> <number>
- full <stat> <player> TRUE if players STAT is at maximum
- time <numb> Evaluates number of seconds till reset
- inc <object> Increments objects state - FALSE if can't
- dec <object> Decrements objects state - FALSE if can't
- lit <object> Test if the object is LIT
- fire <object> Tests for the new 'fire' flag on an object
- health <player> <numb> Returns the health of player in %.
- magic <level> <pts> <%> Checks for cast spell. Players rank MUST be
- atleast <level>, must have atleast <pts>
- magic points and % is the percentage chance
- a player at level <level> has of success. The
- %age is scaled up the ranks with TopRank
- players getting 100%.
- spell <player> <%> Checks players defence %. Used with magic.
-
-
- Actions:
-
- Action Description
- =============================================================
- syntax <n1> <n2> sets noun1 & noun2
- setpre x <text> Sets a players pre-rank description
- setpost x <text> Sets a players post-rank description
- setarr x <text> Message displayed when player "arrives".
- setdep x <text> Message displayed when player leaves.
- do <verb> Do subroutine. Continue unless FAILPARSE
- executed.
- interact <player> Flags player as currently undergoing
- interaction from you. Stop ACTION and
- ANNOUNCEs getting to him from you.
- senddaemon <player> <daemon> <time>
- Sends the daemon to AMan to be processed
- by another user. Set time to 0 if you
- simply want to make the remote user
- execute a command!
- AutoExits On|Off Enable/disable autoexits.
- Respond <message> Same as REPLY but also does an ENDPARSE.
- Error <message> Same as RESPOND but includes a FAILPARSE.
- combat ** fixed **
- burn <object> Sets the LIT flag of an object
- douse <object> Extinguishes the object
- inc <object> Same as condition but no return
- dec <object> Same as condition but no return
- toprank Make the player the toprank.
- deduct <player> <%> Reduces players score by percent.
- damage <object> <numb> Inflict points of damage on object.
- repair <object> <numb> Repair points of damage on object.
-
-
- Room Flags:
-
- Flag Description
- =============================================================
- PEACEFUL Stops fighting in this location.
-
-
- Object FIXED Flags:
-
- Flag Description
- =============================================================
- WEAPON Is now a STATE flag.
- FIRE Says "The <noun> is on fire." when LIT.
- also, the LIT flag is ported between
- states. Use this flag for, say, lighting
- openable objects such as doors!
- SMELL Indicates blind players ONLY see this.
-
-
- Slot labels: (As of now called Variables)
-
- Label Description
- =============================================================
- ~<number> Random number between 0 and <number>
- `<number> Random number between num*.5 and num*1.5
- eg `100 could be 50 to 150.
- myscore Players score
- mysctg Points scored this game
- mystr Players strength
- lastroom Last room player was in
- lastdir Last travel verb player used (direction)
- lastverb Last verb the player used
-
-
- System Messages:
-
- Number Usage & Example
- =============================================================
- $71 When a Death room is listed by Exits
- eg Certain death!
- $72 When a player tried to fight in a 'Peaceful' room.
- $73 When a player tried to cast a spell above his level.
- $74 When a player lacks the required magic points.
-
- Escape Codes:
-
- Code Description
- =============================================================
- @fm The player following me
- @mf The player I am following
- @mg My current magic points.
-
-
- The following files will require attention:
-
- File Reason(s)
- =============================================================
- Title.Txt Add RankScale= and TimeScale= entries.
- Lang.Txt You can now remove those HORRIBLE
- chunks of code where you have a
- dozen syntax=verb noun=x noun=y
- where you are processing the
- commands for each are a single
- line... You can now check for
- noun1 and noun2, so code can change
- dramatically!
- You can now change the syntax of
- the users input. This means you
- can scrap those long portions of
- code where you repeat the same
- process for 'verb noun player' as
- you do for 'verb player noun'.
- You can now have 'subroutines'.
- Size can be DRASTICALLY reduced by
- replacing lots of <condition> reply <text>
- followed by & endparse with RESPOND and/or
- ERROR. See below.
- Replace ATTRIB with STAT command.
- Replace HURT with SUB command.
- Objects.Txt Your "adj=" statements now have a
- purpose in life! The AMUL parser will
- now understand these, though they are
- optional.
-
- Changes to AMAN command line:
-
- Switch Changes
- ===================================================================
- -r Now accepts "aman -r" or "aman -r <number>"
- <number> allows you to specify the number
- of seconds BEFORE the game should reset.
- Users are warned of the pending reset.
- -x Allows you to extend current game time.
- Essential if you have a user with 50,000
- points of hard earned treasure who needs
- an extra 10 seconds to score his points!
-
- AMAN -r [<number>] | -x <number> | -k | [-q] <path name>
-
-
- Bug Fixes, Changes and Cures
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- o Daemons can now call themselves. Verbs can also reparse themselves
- using a command, such as: - treatas exampleverb
-
- o Under KickStart 2.0 AMUL would regularly lose the screen title
- when displaying objects. This has been cured.
-
- o AMUL now understands adjectives!!!! If the player types:
-
- > get match
- or > get safety match
-
- He will pick up the nearest match with adj=safety. If there are
- several matches around, and the player specifies <adj> <noun> he
- will get the one specified; ie it will ONLY match "safety match"
- with itself, so "unlit match" wouldn't work.
-
- o Players can now have pre- and post- -rank descriptions, eg:
- "Fritter the witch"
- with 'despicable' as pre-rank description becomes:
- "Fritter the despicable witch is here."
- and
- "Robert the Lord"
- with post-description 'of Nottingham' as post-description is:
- "Robert the Lord of Nottingham".
- Players can have BOTH a pre- and post- description.
-
- o Players arrival & departure strings can now be changed dynamically,
- changing the way they appear to move around in the game. For
- instance, a drunken player would stagger off rather than just
- leave. So:
- reply "The world spins round!"
- setdep "Staggering wildly, @me has just left."
- setarr "With some difficulty, @me has just arrived."
- When player 'Fritter' leaves a room:
- Staggering wildly, Fritter has just left.
-
- o When displaying your inventory, if your inventory was more than a
- line long, the word wrap didn't work until the 10th character on
- the second line. This has been cured, and the inventory is now
- displayed far more quickly.
-
- o The following:
- ---Cut---
- * north
- Large room.
- You have just entered the large room.
- Bill the novice is here, carrying book.
- *
- Bill the novice has just arrived.
- ---End---
- would happen when two players moved from room to room at the same
- time. Players are now marked as 'in transit' and don't appear on
- the description until they have actually finished arriving. 8-)
-
- o Prefixing a value in Lang.Txt, Mobiles.Txt or Travel.Txt with a
- tilde (~) or backtick (`) will result in the value being randomized
- at run time, each time it is used. ~<number> means A VALUE BETWEEN
- 0 AND NUMBER. `<number> means A VALUE BASED ON NUMBER. Effectively,
- `<number> is ( ~<number> ) + <number>/2. So, `100 is (~100)+50.
-
- o Two new options in Title.Txt:
- RankScale=X TimeScale=Y
- eg RankScale=40 TimeScale=60
-
- Scaling affects the value of an object depending on how long since
- last reset and how high the players rank.
-
- RankScale is the DEDUCTION IN VALUE of objects for TOP RANK players,
- with the value INCREASING for each subsequent lower rank.
- TimeScale is a little more complex. It is based on the amount of
- gametime used. For the last 10% of the game objects are worth their
- full value to Rank 1 players. The value specified here is the INITIAL
- scaling factor. For example. Using the above TimeScale value (60),
- to a Rank 1 player in the first minute of the game, an object with
- Value=100 would be worth ( 100 - 60 % ) = 40 points. After 50
- minutes it would be worth ( 100 - 30 % ) = 70 points. After 100
- minutes the object would be worth its full value (100 points).
-
- Here is an example of Rank and Time scaling effects...
-
- GameTime = 110, Ranks = 5, RankScale = 40, TimeScale = 100
-
- Rank Scale Time Scale
- Rank Deduct % Time Deduct %
- -------+------- --------+---------
- 0 | 0% 0 | 100%
- 1 | 8% 25 | 75%
- 2 | 16% 50 | 50%
- 3 | 24% 75 | 25%
- 4 | 32% 100 | 0%
- 5 | 40% 110 | 0%
-
- o Knock a fifth out of lang.txt!
-
- Two new commands, RESPOND and ERROR replace the need for code
- such as:
-
- if infl me blind reply "You can't see a thing!"
- & endparse
-
- Instead you would now use:
-
- if infl me blind respond "You can't see a thing!"
-
- Respond and Error work in EXACTLY the same way as REPLY or MESSAGE
- but they both execute an ENDPARSE and Error executes an additional
- FAILPARSE. Make sure you make use of these, as they can MASSIVELY
- reduce compile times, parser speed and disk usage!
-
- o A bug where "-> treatas <verb>" would not process has been
- cured. What happened was that the 'endparse' part of ->, &> or
- else> would be processed before the new verb was reached. However,
- you should not NEED to tell AMUL to execute an EndParse following
- a treatas command, since the parseing restarts at a different point
- after its execution!
-
- o Some work has been done on blind players.
- (a) They can no-longer see room descriptions.
- (b) They can now see their own inventories.
- (c) New objects flag 'SMELL' provided to allow blind players
- to know ROUGHLY where they are.
- ONLY a blind player can see a SMELL object, and they should
- usually be made into a scenery object.
-
- o In a HideAway room, SCENERY objects are now displayed (eg rain
- or some form of weather).
-
- o There is a new VERB flag "DREAM". Any verbs not marked with this
- flag cannot be executed by a player who is asleep. It is recommended
- that you make verbs WHO, QUIT, SCORE, SAVE and WAKE "DREAM" verbs.
- Any others should be left to the system, the response being:
- "You can't do anything until you wake up!"
-
- o Attrib has been replaced with STAT, the following changes would be
- required:
- attrib score <50
- to:
- stat score me <50
-
- o The compiler now AUTOMATICALLY sets the weight of a Scenery object
- to the maximum strength of a top-rank player + 1. This means you
- could have an entry such as:
- verb=move
- syntax=verb noun
- noun1 bookcase treatas open
- noun1 slab treatas open
- stat str me <^noun respond "Its too heavy for you to move."
- else respond "Nothing special happens, sigh."
- "<^noun" means LESS THAN THE WEIGHT OF THE NOUN, so the
- stat str me <^noun
- means: If the player's strength is less than the weight of the
- object...
-
- o To run AMUL with Paragon BBS Software or other such systems, you
- will need a shared 'getty' serial device. This works in the same
- way as World Empire in that it simply takes the settings from the
- 'parent' program.
-
- To do it from AMUL, use the -S option, as per usual, but the
- format is SLIGHTLY different:
-
- amul -s 0 <device name> <unit>
-
- Unfortunately with Paragon the first character entered by the
- user is lost... When I figure that one out, I'll cure it 8-).
-
- o When a player walks into a DEATH room which has no DMOVE flag,
- AMUL would originally drop the players objects into the Death room.
- It now returns the objects to the room the player LEFT from.
-
- o Dexterity now moves up and down as does strength thus making
- combat more realistic.
-
- o Combat hit and damage calculations are now ALOT more reliant on
- the players dexterity and strength, therefore making combat more
- realistic with regard to spells etc.
-
- o When wielding a weapon the damage done is now random for the weapon
- plus the players strength damage instead of it all being random. This
- fixes the bug where a player wielding a weapon does less than one
- without.
-
- o Magic points has been added to the score commands.
-
- o 'AMAN -r' with no-users online no-longer causes a system lockup.
-
- o 'AMAN -r' can now accept an optional extra parameter, the delay
- before resetting the game. Users are WARNED of the pending reset.
-
- o 'AMAN -x <seconds>' extends the time remaining on the current
- game. Users are notified of the increase.
-
- -------------------------------------------------------------------------------
- -------------------------------------------------------------------------------
-
-
- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
- D e t a i l
- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
-
-
- -------------------------------------------------------------------------------
- -------------------------------------------------------------------------------
-
-
- [3] Language
-
- [3.1] Conditions
-
- Condition: noun1 <noun>
- noun2 <noun>
-
- TRUE if noun1/noun2 is set to <noun>. Use this when you want to
- trap a single noun part way through a complex syntax statement
- where the resulting code is only a single line, thus:
- verb=light
- syntax=verb noun=brand noun
- - checknear noun2
- - checknear noun1
- if noun2 is wand then skip 2
- if ! flamable noun2 then reply "You can't use the @n2 to light it!"
- & endparse
- < etc >
- is FAR less messy than the old AMUL'S would have required!
-
-
-
-
- [3.2] Actions
-
- Action: syntax <noun1> <noun2>
-
- Sets the values for noun1 and noun2. Please note... You MUST
- specify a valid noun. Either NONE, NOUN1, NOUN2 or an actual
- noun name. PLAYER, TEXT or VERB cannot be specified. Using
- NOUN1 or NOUN2 will also transfer the correct word type.
- eg: verb=shoot
- syntax=verb player noun
- if noun2 is crossbow then syntax noun1 none
- & skip 100 ; Skips to next block...
- -> reply "You can't use THAT to shoot at someone, imbecile!"
- syntax=verb player
- ! carrying crossbow then .....
- The parser DOES process the "verb player" section IF you specify
- crossbow are your weapon.
-
-
- Action: setpre <player> <text>
-
- Sets the players pre-rank description. This allows you to
- call players silly things.
- eg: setpre me "dragonfly-slaying"
- (player becomes '@me the dragonfly-slaying @nr')
- The pre-rank description can be display with the escape code "@d1"
-
-
- Action: setpost <player> <text>
-
- Sets the players post-rank description. This allows you to
- call players silly things.
- eg: setpost me "without a clue"
- (player becomes '@me the @mr without a clue')
- The pre-rank description can be display with the escape code "@d2"
-
-
- Action: setarr <player> <text>
-
- Sets the string sent to OTHERS when the player arrives in a room.
- eg: setarr player "@me has just arrived, reeking of garlic!"
-
-
- Action: setdep <player> <text>
-
- Sets the string sent to OTHERS when the player leaves a room.
- eg: setdep me "With an obvious limp, @me has just left."
-
-
- Action: respond <text>
-
- Sends the message to the player and then executes an ENDPARSE.
- eg: if infl me blind respond "You can't see a thing."
- replaces:
- if infl me blind reply "You can't see a thing."
- & endparse
-
- NOTE: If you had something like:
-
- if infl me blind reply "You can't see a thing."
- else reply "OK, you flick the light switch."
- & action others "You hear a 'CLICK!' as someone flicks a light switch!"
- &> state lights 0
-
- You should use RESPOND (or ERROR) here and remove the conditions
- infront of the rest of the lines. This will improve response
- of the game online.
-
-
- Action: error <text>
-
- Sends the message to the player and then executes an FAILPARSE.
- eg: if !nearto player error "I can't see @n1 here!"
- replaces:
- if !nearto player reply "I can't see @n1 here!"
- & failparse
-
- NOTE: See the notes for RESPOND.
-
-
- [3.3] Other Changes
-
- Bug Fixes and Cures
- ~~~~~~~~~~~~~~~~~~~
-
- #1 A minor bug has been cured... Richard's fabled '.combat'
- daemon was a no-goer. [That'll teach you to document
- things you haven't tested, Mr Pike!]. The reason was
- simple to cure - but neither of us spotted it till I
- tried some of Richards stuff... The daemon was:
-
- verb=.combat
- syntax=verb any
- - combat
- - start .combat 5
-
- This did NOT work, for the simple reason that you
- couldn't call a verb/daemon from itself. Until the
- end of the verb was reached, the verb wasn't actually
- added to the compile table. The simple cure was to
- add a check for the verb held in the work-space. This
- HAS cured it. So you CAN now do the above. As for the
- combat routines; well they still need a bitta fixing.
-
-
- [3.4] Examples
-
- [3.4.1] Using pre- and post- rank descriptions.
-
- verb=set_name
- syntax=verb player text
- toprank setpre player text
- & endparse
- myrank <3 reply $38 ; only rank 3 or above can do it.
- & endparse
- setpre player text
-
- [3.4.2] Streamlining a game with RESPOND and ERROR.
-
- Two more commands have been added in the struggle to reduce size,
- compile time and processing time of games as they get bigger and
- bigger! The most common sequence of commands in AMUL games seems
- to be relating to telling players about their mistakes, stupidity
- or otherwise reporting back. The bulk of games actually do very
- little, but since 'text' is the only way the player can sense his
- environment it is essential that there is plenty, but not too
- much, of it.
-
- THE most common sequence is generally:
-
- <condition> reply <text>
- & endparse
- or
- <condition> reply <text>
- & failparse.
-
- It should be noted here that FAILPARSE SHOULD be used by budding
- games developers. When mobiles and object-classes are installed
- they will tell the game when to stop trying to do recursive parses,
- for example:
-
- > PUT ALL IN BAG
-
- Although you can't actually do this yet, what the game WILL do is
- search for all the objects which match the top element of 'put's
- ?CHAE string and attempt to execute
-
- > PUT <noun> IN BAG
-
- So if the player was carrying "BRICK, BAT, BALL" it would try
- PUT BRICK IN BAG, PUT BAT IN BAG, PUT BALL IN BAG. If the bag
- is closed, you don't want to tell the player three times:
-
- > put all in bag
- brick: The bag is closed, you'll have to open it first!
- bat: The bag is closed, you'll have to open it first!
- ball: The bag is closed, you'll have to open it first!
-
- Messy, huh? So... Your code might look something like, using the
- OLD commands... (This example assumes objects are open in state 0)
-
- ----Start----
- verb=put
- syntax=verb noun noun
- checknear noun2
- checknear noun1
- ! container noun2 reply "You can't put anything in the @n2!"
- & failparse
- ! canfit noun1 in noun2 then reply "There isn't enough room in the @n2."
- & endparse
- ! opens noun2 skip 2
- ! state noun2 0 reply "The @n2 is closed, you'll have to open it first!"
- & failparse
- reply "The @n1 fits nicely into the @n2."
- put noun1 into noun2
- -----End-----
-
- Note. When there is not enough room an ENDPARSE is used. The next
- object may be smaller and thus may fit inside <noun2>. In the
- other two occasions it is obvious that there is no point to try
- a second object. However, using the new ERROR and RESPOND commands
- the code would be reduced to:
-
- ----Start----
- verb=put
- syntax=verb noun noun
- checknear noun2
- checknear noun1
- ! container noun2 error "You can't put anything in the @n2!"
- ! canfit noun1 in noun2 then respond "There isn't enough room in the @n2."
- ! opens noun2 skip 2
- ! state noun2 0 error "The @n2 is closed, you'll have to open it first!"
- reply "The @n1 fits nicely into the @n2."
- put noun1 into noun2
- -----End-----
-
- Neat, huh?
-
- [3.4.3] Using full...
-
- Goal: To award a user with 1 point of stamina after every 5 seconds
- of sleep.
-
- Explanation:
- After a fight, either one player will be dead, or there will be two
- living players on reduced stamina. These two will be prone to attack
- from other players (and later on mobiles). There needs to be some
- way for players to recover their stamina.
-
- The natural thing to do is to sleep. If you decide to implement this
- into your own games, you may wish to vary the ratio depending on the
- style of game. In this example we use a 1 stam/5 second ratio. Don't
- use a daemon which operates every second or so; this will consume
- massive quantities of processor time! 8-(
-
- ----Start----
- verb=.recsleep
- syntax=verb any
- ! infl me sleep endparse ; ABORT ! ABORT ! ABORT !
- ! full stam me add 1 stam me ; Add one stamina point
- ! full stam me start .recsleep 5
- & endparse
- reply "You are too alert to sleep any more!"
- reply "Your stamina is now @st."
- cure me sleep
- action others "@me has woken up."
- respond "You are now awake."
-
- verb=sleep
- syntax=verb player=me
- syntax none none ; Reprocess this line
- syntax=verb none
- infl me sleep respond "You already ARE asleep!"
- active .recsleep cancel .recsleep
- inflict me sleep
- start .recsleep 5
- light action others "@me has just fallen asleep."
- reply "You are now asleep."
- -----End-----
-
- -------------------------------------------------------------------------------
- -------------------------------------------------------------------------------
-
-
- [4] Next Version...
-
- [4.1] Conditions
-
- The following conditions will, hopefully, be added by version 0.9
-
- #1 lastplayer Checks the last player mentioned
- #2 equates Allow you to perform simple maths/logic.
-
-
- [4.2] Actions
-
- The following actions will, hopefully, be added by version 0.9
-
- #1 getfrom
- #2 putin
-
- The following actions are planned for the future:
-
- #1 A means of 'where'ing a player.
- #2 Ability to list another players inventory.
- #3 "Snoop" feature. This will allow one player to see the
- inputs of another. Useful for debugging, since you can
- monitor what players do. It also allows top-ranked
- players (Wizards) to take a hand in inducting novices,
- since they can tell what the novice is TRYING to do.
-
-
- [4.3] General features and alterations.
-
- #1 MORE speed (PLEASE)
- #2 Smaller output (data files)
- #3 Separate Daemon parser, to allow indi daemons.
- #4 Mobiles (soon - I hope)
- #5 "All" as a noun...
- #6 Object classes... (That should be fun, hey Rich?)
- #7 Parser will be able to cope with
- > Plant the plant in the plant pot.
- #8 Containers will be fully operative.
-
-
- [4.4] Finally...
-
- There are ALL sorts of changes heading AMUL'S way in the near
- future... I am currently talking, indirectly, with the 4D BBS
- author(s?) (thanks Kulvinder), and am hoping to make AMUL 4D
- compatible... From what I gather Jon is too busy playing Gem
- Stones to fix the bugs in 2.10a7...
-
- One of the main changes coming to AMUL will be two new escape
- codes: @xx and @xy. These two codes are used in multi-user
- interaction. @xx by default gives the players name, @xy will
- give "@me the @mr". But these are ONLY to players who can see
- your player! The table of outputs is something like:
-
- (* indicates if YOUR player is top rank)
-
- A c t i o n
-
- when @xx @xy
- --------------------------------------------------------------------
- Can See Me @me @me the @mr
- SameRoom, Can't see me Someone nearby Someone
- * " " " " " " " " " " " Someone very powerful Someone very powerful
- DiffRoom, Can't see me Someone Someone
-
- A n n o u n c e
-
- when @xx @xy
- --------------------------------------------------------------------
- Can See me @me @me the @mr
- SameRoom, Can't see me A @gn voice nearby A @gn voice nearby
- * " " " " " " " " " " " " " " " " " " " " Nearby, someone very powerful
- Diffroom, Can't see me In the distance an @gn voice (<-ditto)
-
- With these features at your command, you should REALLY be able to
- tidy up those multi-user bits, and get a REAL game up and running!
-
- These will be the bulk of the differences between 0.89 and 0.9,
- the NEXT release version!
-
- Right... Enough waffle... GET ADVENTURING!
-
- -------------------------------------------------------------------------------
- -------------------------------------------------------------------------------
-